<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 数组可以存储 多条数据 但是对数据的描述不够清晰  
    // var arr = ["张三", 55, 66, 77];
    // console.log(arr,typeof arr); 
    // console.log(arr.length,arr[0]);   

    // 对象: 对一个或一类事物 特征和行为的描述
    // 注意
    // (1) 对象是以键值(key:value)对形式存在的
    // (2) 数组也是一个特殊的对象  (键名是数字)
    // (3) 键名都是字符串  引号可以省略

    // 对象的特性:
    // (1) 对应键名取值和赋值  (排名不分先后)
    //  a. 点语法      对象.属性名      => 快捷取值
    //  b. 中括号      对象["属性名"]   => 中括号中要求放字符串/变量 => 对象遍历 函数封装对象取值
    // 对象取值取不到(取一个不存在的属性名) 则返回undefined
    // 对象赋值一个不存在的属性   则新增该属性到对象中

    // (2) 可以被循环遍历  for...in 






    // var zhang = {
    //     // 键名(属性名 字符串) : 键值(属性值 任意类型)
    //     "name":"张三",
    //     "chinese": 55,
    //     "math":66,
    //     "english":77,
    //     "hobby":["唱歌","跳舞"]
    // }
    var zhang = {
        // 键名(属性名 字符串) : 键值(属性值 任意类型)
        name:"张三",
        age:18,
        chinese: 55,
        math:66,
        english:77,
        hobby:["唱歌","跳舞"]
    }
    console.log(zhang);

    // 点语法
    // 取值  (没有等号  等号在左边  取值)
    // console.log(zhang.name);
    // var age = zhang.age;
    // console.log(age);
    // console.log(zhang.chinese);
    // console.log(zhang.math);
    // console.log(zhang.english);
    // console.log(zhang.hobby);

    // 对象取值取不到(取一个不存在的属性名) 则返回undefined
    // console.log(zhang.hello);

    // 赋值
    // zhang.name = "李四";
    // zhang.age = 24;
    // zhang.chinese = 76;
    // zhang.math = 87;
    // zhang.english = 90;

    // 对象赋值一个不存在的属性   则新增该属性到对象中
    // zhang.hello = "你好";
    // console.log(zhang);


    // 中括号语法
    // 取值
    // console.log(zhang["name"]);
    // console.log(zhang["age"]);
    // console.log(zhang["chinese"]);
    // console.log(zhang["math"]);
    // console.log(zhang["english"]);
    // console.log(zhang["hobby"]);
    // console.log(zhang["hello"]);

    // // 赋值
    // zhang["name"] = "王五";
    // zhang["age"] = 30;
    // zhang["chinese"] = 85;
    // zhang["math"] = 68;
    // zhang["english"] =  79;
    // zhang["hello"] =  "你好";
    // console.log(zhang);
    


 /*    function getData(key){  //传入一个键名(字符串 "name" "age")  返回对应的值
        var zhang = {
            // 键名(属性名 字符串) : 键值(属性值 任意类型)
            name:"张三",
            age:18,
            chinese: 55,
            math:66,
            english:77,
            hobby:["唱歌","跳舞"],
        }
        return zhang[key]; // zhang["name"]
    }

    console.log(getData("name"));
 */
    var zhang = {
        // 键名(属性名 字符串) : 键值(属性值 任意类型)
        name:"张三",
        age:18,
        chinese: 55,
        math:66,
        english:77,
        hobby:["唱歌","跳舞"],
    }
    for(var key in zhang){
        //       key  "name" "age" "chinese"
        // zhang[key]  zhang["name"]
        console.log(key,zhang[key]);
    }




</script>
</html>